Peer to peer content distribution and streaming is well-known and there are numerous system proposals and implementations in the literature and industry. One such system includes peers, where each peer stores and streams videos to the requesting client peers. Each video is encoded into multiple descriptions and each description is placed on a different node. When a serving peer disconnects, the system locates another peer who is storing the same description and has sufficient uplink bandwidth for the requesting client. This solution does not provide a cache or storage management policy.
A method for arranging nodes within a wide area network has been disclosed in which users relay broadcast content among each other. The conventionally-encoded media stream is segmented into small files and each file is uploaded to users who re-upload them repeatedly in a chain-letter style multiplier networks. The clients at the same time playback the files continuously through a conventional media player after some playback delay.
In another system, clients have a memory cache used for storing the downloaded media file. The clients are clustered together, depending on their arrival times, to join the same media stream from the server in a chained fashion. They fetch the missing initial segments of the media file from the cache of other clients in the chain. The specified system does not manage the resources proactively, but applies static rules of caching and serving.
A data buffer management tool has been disclosed in which a decision is made on what should remain in the mass storage and what should be retained in the buffer memory when serving multiple video ports. The tool makes use of the predictable nature of the video data stream in predicting future requirements for a given one of the data blocks to decide whether to retain it in the buffer or in the mass storage.
A cache lookup system to retrieve data in a client-server network has been proposed, where clients use the caches of other clients to retrieve the requested information. The system does not specify how the cache spaces should be optimized to reduce the server load. In another system referred to as BASS the BitTorrent is augmented by adding a media server into the system and forcing clients to download only the segments after their playback point. Clients can download both from the media server and use the BitTorrent peer-to-peer (P2P) connections simultaneously. The system combines the benefits of client-server and P2P architectures, but it does still follow a randomized caching strategy since it is based on BitTorrent system, where rarest segments in the neighborhood of a client are pushed forward to the client and tit for tat sharing policies are utilized.
Caches of peers have been treated as seeds of new multicast sessions to improve the server bandwidth utilization. Again the caching strategy here is static and not adaptive to the demand. It also requires chaining of nodes and patching missing information. Hence, the client caches are not optimized with respect to the demand.
An erasure coding method has been proposed to generate encoding blocks from the original media and instead deliver unique encoding blocks to each of the clients. Clients store as many encoding blocks as possible depending on their buffer sizes and serve the cached content to other peers. Again this method does not allow optimizing the cache for the demand heterogeneity across the video segments and its time-variability. Caching in the context of deciding where the new coming clients join into the distribution tree has been discussed. Also random pre-fetching of future data has been proposed, as well as caching the most recent data and the control is over the topology rather than the cached data. In another solution, the “supplier” of a segment counts, but the supply is not used in caching decisions. The supply count is used to decide whom to ask for which segment (e.g., one policy is to ask for the rarest segment in the system). The solution utilizes a gossiping based protocol to establish delivery.